home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 May & June / Amiga-CD 1996 #5-6.iso / pd-disketten / dms-gepackt / 3_96 / apd-3-96-2.dms / apd-3-96-2.adf / Amiga-E-Kurs / listing_2.e < prev    next >
Text File  |  1996-01-30  |  2KB  |  76 lines

  1. /* Library-Funktionen in E,  © 1995 M. Bennicke */
  2.  
  3. MODULE 'intuition/intuition', /* intuition-Modul */
  4.        'utility/tagitem'       /* für Tag-Listen */
  5.  
  6. CONST BREITE = 300, HOEHE = 170,
  7.       LINIEN_ANZAHL = 200
  8.  
  9. PROC main()
  10.   DEF win=NIL:PTR TO window, /* Objekt »window« ist
  11.                              aus Modul intuition */
  12.       rp,i
  13.  
  14.   IF openLibs()
  15.     /* diese Intuition-Funktion öffnet ein Fenster;
  16.        die Konstanten stammen aus dem Modul */
  17.     win:=OpenWindowTagList(NIL, [WA_TITLE,'Amiga-E',
  18.       WA_INNERWIDTH,BREITE, WA_INNERHEIGHT,HOEHE,
  19.       WA_GIMMEZEROZERO,TRUE, WA_ACTIVATE, TRUE,
  20.       TAG_DONE]:tagitem)
  21.  
  22.     /* Fenster wurde geöffnet, wenn win<>NIL ist */
  23.     IF win<>NIL
  24.       /* Rastport-Struktur bestimmen, sie wird für
  25.          alle Grafikausgaben benötigt */
  26.       rp:=win.rport
  27.  
  28.       /* Zufallslinien zeichen */
  29.       FOR i:=1 TO LINIEN_ANZAHL
  30.         Move(rp,Rnd(BREITE),Rnd(HOEHE))
  31.         SetAPen(rp,Rnd(8))
  32.         Draw(rp,Rnd(BREITE),Rnd(HOEHE))
  33.       ENDFOR
  34.  
  35.       SetAPen(rp,1)             /* Text ausgeben */
  36.       Move(rp,BREITE/2-100,HOEHE/2)
  37.       Text(rp,'Das OS genutzt mit E',STRLEN)
  38.  
  39.       Delay(3*50)     /* mit Delay() 3 sec warten */
  40.       CloseWindow(win)       /* Fenster schließen */
  41.     ELSE            /* ELSE-Teil von IF win<>NIL  */
  42.       WriteF('Fenster ist nicht zu öffnen.\n')
  43.     ENDIF
  44.   ELSE           /* ELSE-Teil von IF openLibs() */
  45.     WriteF('Bibliotheken sind nicht zu öffnen.\n')
  46.   ENDIF
  47.   closeLibs()
  48. ENDPROC
  49.  
  50. /* öffnet alle Libraries und gibt TRUE zurück, wenn
  51.    alles geklappt hat, sonst FALSE */
  52. PROC openLibs()
  53.   intuitionbase:=OpenLibrary('intuition.library',37)
  54.   IF intuitionbase=NIL THEN RETURN FALSE
  55.  
  56.   /* diese Zeilen fassen eine Zuweisung und einen
  57.      Vergleich wie oben zusammen. Beachten Sie die
  58.      zusätzlichen Klammern */
  59.   IF (dosbase:=OpenLibrary('dos.library',
  60.      37))=NIL THEN RETURN FALSE
  61.   IF (gfxbase:=OpenLibrary('graphics.library',
  62.      37))=NIL THEN RETURN FALSE
  63. ENDPROC TRUE
  64.  
  65. /* schließt alle geöffneten Libraries wieder */
  66. PROC closeLibs()
  67.   /* nur schließen, wenn Library offen war */
  68.   IF gfxbase<>NIL THEN CloseLibrary(gfxbase)
  69.  
  70.   /* Der Vergleich kann weggelassen werden, da der
  71.      Wert NIL als FALSE und ein Wert<>NIL als TRUE
  72.      interpretiert wird */
  73.   IF dosbase THEN CloseLibrary(dosbase)
  74.   IF intuitionbase THEN CloseLibrary(intuitionbase)
  75. ENDPROC
  76.